iT邦幫忙

2023 iThome 鐵人賽

DAY 19
0

今天終於解決無法import的問題了!

最終發現是,在安裝slash command時他只有安裝info沒有他的本體,這就會導致無法import進來。會發現這個問題是因為我嘗試安裝前一版本的slash command(3.0.3)發現他是可以正常import的,只是因為版本過舊無法使用,而我在卸載時發現他跟新版的slash command(4.2.1)的差別是在3.0.3有一個本體,因此問題終於解決了。

後來差了許多資料才發現slash command應該過時了所以無法使用,現在新的slash command應該要用app_commands,下面是程式碼及註解

程式碼

from typing import Optional

import discord
from discord import app_commands


MY_GUILD = discord.Object(id=your guild id)  # replace with your guild id


class MyClient(discord.Client):
    def __init__(self, *, intents: discord.Intents):
        super().__init__(intents=intents)

        self.tree = app_commands.CommandTree(self)

#必須要有這段slash command才會出現在你的聊天室
#copy_global_to() 將全不命令複制到伺服器
#sync() 實際上將register發送到 Discord
    async def setup_hook(self):
        self.tree.copy_global_to(guild=MY_GUILD)
        await self.tree.sync(guild=MY_GUILD)


intents = discord.Intents.default()
client = MyClient(intents=intents)


@client.event
async def on_ready():
    print(f'Logged in as {client.user} (ID: {client.user.id})')
    print('------')

#tree.command傳送訊息的方式要用interaction.response.send_message,async def hello():的括號中不能寫ctx要寫interaction
@client.tree.command()
async def hello(interaction: discord.Interaction):
    """Says hello!"""
    await interaction.response.send_message(f'Hi, {interaction.user.mention}')

client.run(’token’)

執行結果
https://ithelp.ithome.com.tw/upload/images/20230930/20161116w5fedXxfM4.png


上一篇
[Day18] discord.py slash_command問題與討論(上)
下一篇
[Day20]骰子機器人
系列文
使用discord.py開發自己的機器人30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言